python基础第二十二节

面向对象三大特性
面向对象编程(Object-Oriented Programming, 简称OOP)有三大特性, 分别是封装继承多态.这些特性是面向对象编程的基础, 它们使得程序的设计更加灵活、易于维护和扩展.

22.1 封装

封装是指将数据和操作数据的方法封装在一个单独的单元中, 对外部隐藏数据的具体实现细节, 只暴露必要的接口供外部访问.通过封装, 可以实现数据的隐藏和保护, 防止外部直接访问对象的内部数据, 同时还可以控制对数据的修改和操作, 确保数据的有效性和安全性.
封装的优势:

22.2 继承

继承是面向对象编程中的一种重要特性, 它允许一个类(子类)从另一个类(父类)继承属性和方法, 并且可以在此基础上进行扩展和修改.通过继承, 子类可以复用父类的代码, 避免重复编写相同的功能, 同时可以在子类中添加新的属性和方法, 或者重写父类的方法, 从而实现代码的灵活和易于扩展.
优势

  1. 代码重用: 继承允许子类从父类继承属性和方法, 避免了重复编写相同的代码, 提高了代码的重用性.
  2. 代码组织和扩展: 继承可以使代码的组织结构更加清晰, 将通用的功能封装在父类中, 特定的功能在子类中实现, 便于代码的维护和扩展.
  3. 代码复杂性降低: 继承使得代码的层次结构更加清晰, 提高了代码的可读性和可维护性, 降低了代码的复杂性.
    语法
    在Python中, 继承使用class 子类名(父类名)的语法来实现, 子类拥有父类的所有属性和方法.子类可以直接使用父类的方法, 也可以在子类中添加新的方法或者重写父类的方法.
    多继承
    在Python中, 一个子类可以继承多个父类, 这种继承方式称为多继承.多继承允许子类同时拥有多个父类的属性和方法.
    属性,方法重写
    子类可以重写父类的方法, 即在子类中重新实现与父类同名的方法.这样做可以根据子类的需要修改或扩展方法的行为.
    调用父类的成员
    super: super() 用于调用父类的成员, 它可以在子类中调用父类的成员.

22.3 多态

多态: 就是多种状态, 即做某一个行为(同样的行为)的时候, 使用不同的对象会得到不同的状态.
在面向对象编程中, 多态是一种重要的概念, 它允许不同的对象对相同的方法做出不同的响应.简而言之, 多态性使得可以使用统一的接口来调用不同类的对象, 而无需关心对象的具体类型, 从而实现更灵活和可扩展的代码设计.
在Python中, 多态性是由动态类型和动态绑定实现的.具体来说, Python是一种动态类型语言, 这意味着变量的类型在运行时根据赋值而确定, 而不是在编译时确定.因此, 同一个方法名可以在不同的类中实现, 并且可以根据对象的类型调用不同类的方法
抽象基类(Abstract Base Classes, 简称ABC)是Python中的一个重要概念, 它允许我们定义抽象类和抽象方法, 从而可以规范子类的行为.抽象基类并不能被实例化, 只能用于继承.子类必须实现抽象基类中定义的所有抽象方法.
Python中的抽象基类通过abc模块提供, 使用抽象基类可以达到以下几个目的:

  1. 规范子类行为: 抽象基类允许我们定义一组接口或方法, 子类必须实现这些方法, 从而规范了子类的行为.
  2. 约束方法命名: 通过抽象基类可以强制子类必须实现指定的方法, 这样可以避免方法名拼写错误或者忘记实现方法的问题.
  3. 多态性支持: 抽象基类实现了多态性, 可以在使用抽象基类的地方接受多种不同的子类对象, 从而实现更灵活的代码设计.
  4. 文档化接口: 抽象基类可以帮助文档化接口, 让开发者了解哪些方法必须实现, 哪些是可选的.